﻿@model dynamic

@{
    ViewBag.Title = "Ajax测试主要页面";
}

@section scripts{
    <script src="~/scripts/testthis.js"></script>
    <script>
        $(function () {
            //            alert("loaded");
            //测试testthis.js,global的this
            fooCoder(2);
            testthisfromfoocoder();

//            addfunction(3);

            //testthis的方法入口
            testthis();
        });

        function writetext() {

            $("#info").val("welcome!");
        }
    </script>
}

@section scripts2{
    <script>
        $(function () {
            //writetext();
        });


        function writetext() {

            $("#info").val("welcome2!");
        }

        /*
            以上我们可以看得出来，一共有三个writetext函数
            并且我们知道，在js中，函数的名称是可以重复的。
            那么，我们最需要知道的就是调用的顺序了
        */
        function writetext() {

            $("#info").val("welcome3!");
        }
    </script>

}

@section closures{
    <script>
        function f() {
            var n = 1;

            function s() {
                alert(n++);
            }

            return s;
        }

        /*
        *   以上，testf其实是s()的一个引用。所以可以访问n
        */
        $(function () {
            var testf = f();
            //            testf();
            //            testf();
            //            testf();
        });

        /*
        * 这段代码，相当于一段代码的直接执行。
        */
        (function jquerymodeltest() {
            //            alert("jquerymodel");
        })();

        /*
        *   定义一个对象。
        */
        window.mp = function methodparam(m1, p2) {
            m1(p2);
        };

        /*
        *   调用该对象。
        */
        mp(
            function (val) {
                //                alert(val);
            },
            "I am ok!");

    </script>

}

@* 
通过模拟jquery的方式来模拟闭包的实现。
 *@
@section simujquery{
    <script>
        //$$就是一个返回的呃doc对象，有属性version和方法alertversion、changett。
        //$$调用alertversion方法时，this自然就是$$。
        window.$$ = (function (tt) {
            var doc = {
                version: "1.1.1.0",
                alertversion: function () { alert(this.version); }
            };

            doc.changett = function (name, value) {
                tt(name).val(value);
            };
            return doc;
        })($);

        $(function () {
            //$$.changett("#info", "Welcome4");
            //$$.alertversion();
        });
    </script>

}


<h2>Ajax测试主要页面</h2>

@Html.TextArea("info", new { rows = 20, column = 50 })